import java.util.Calendar;


public class TestUsuario implements Test {

	String nombre = "Gustavo";
	String apellido = "Ferreyra";
	String direccion="500 Millas 296" ;
	String ciudad= "Rafaela";
	int codigoPostal=2300 ;
	int mes= 10 ;
	int dia= 22;
	int anio= 1991;
	int dni= 35953949;
	int telefono= 451375;
	
	Usuario usuario = new Usuario(dni, nombre, apellido, dia, mes, anio, direccion, codigoPostal, ciudad, telefono);
	
	// Main
	public static void main(String[] args) {
		TestUsuario test = new TestUsuario();
		test.ejecutar();
	}
	
// Formas de ejecución
	
	// Para utilizar desde el main de esta clase y probarla individualmente
	public void ejecutar(){
		boolean resultado = true; 
		System.out.println("TEST DE LA CLASE USUARIO");
		
		
		System.out.print("\t NOMBRE: \t");
		if(!this.comprobarNombre()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
	
	
		
		System.out.print("\t APELLIDO: \t");
		if(!this.comprobarApellido()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		

		System.out.print("\t DIRECCION: \t");
		if(!this.comprobarDireccion()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		
		System.out.print("\t CIUDAD: \t");
		if(!this.comprobarCiudad()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		
		System.out.print("\t CODIGO POSTAL: \t");
		if(!this.comprobarCodigoPostal()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		
		System.out.print("\t NACIMIENTO: \t");
		if(!this.comprobarNacimiento()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		
		System.out.print("\t DNI: \t");
		if(!this.comprobarDni()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		
		System.out.print("\t TELEFONO: \t");
		if(!this.comprobarTelefono()){
			resultado=false;
			System.out.println("FALLO");
		}
		else
		{
			System.out.println("OK");
		}
		
		
		
		// Veredicto
		if(resultado){
			System.out.println("La clase funciona correctamente");
		}
		else
		{
			System.out.println("Existen Errores en la Clase");
		};
	}
	
	
	// Para utilizar en la clase Tests
	public boolean ejecutarSilencioso(){
		boolean resultado = true;
		
		// Comprobamos los atributos correspondientes
		if(!this.comprobarNombre()){resultado=false;};
		if(!this.comprobarApellido()){resultado=false;};
		if(!this.comprobarDireccion()){resultado=false;};
		if(!this.comprobarCiudad()){resultado=false;};
		if(!this.comprobarCodigoPostal()){resultado=false;};
		if(!this.comprobarNacimiento()){resultado=false;};
		if(!this.comprobarDni()){resultado=false;};
		if(!this.comprobarTelefono()){resultado=false;};
		
		
		return resultado;
	}

	
	
	
	// Pruebas individuales
	
	private boolean comprobarNombre(){
		if(this.getNombre().compareTo(this.getUsuario().getNombre())==0){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarApellido(){
		if(this.getApellido().compareTo(this.getUsuario().getApellido())==0){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarDireccion(){
		if(this.getDireccion().compareTo(this.getUsuario().getDireccion())==0){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarCiudad(){
		if(this.getCiudad().compareTo(this.getUsuario().getCiudad())==0){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarCodigoPostal(){
		if(this.getCodigoPostal()==this.getUsuario().getCodigoPostal()){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarNacimiento(){
		if((this.getDia()==this.getUsuario().getFechaNac().get(Calendar.DAY_OF_MONTH)) && (this.getMes()==this.getUsuario().getFechaNac().get(Calendar.MONTH)) && (this.getAnio()==this.getUsuario().getFechaNac().get(Calendar.YEAR))){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarDni(){
		if(this.getDni()==this.getUsuario().getDni()){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	private boolean comprobarTelefono(){
		if(this.getTelefono()==this.getUsuario().getTelefono()){
			return true;
		}
		else
		{
			return false;
		}
	}
	
	
	public String getClase() {
		return this.getUsuario().getClass().getName();
	}
	
	//Getters And Setters
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getCiudad() {
		return ciudad;
	}
public void setCiudad(String ciudad) {
		this.ciudad = ciudad;
	}
public int getCodigoPostal() {
		return codigoPostal;
	}
public void setCodigoPostal(int codigoPostal) {
		this.codigoPostal = codigoPostal;
	}
public int getMes() {
		return mes;
	}
public void setMes(int mes) {
		this.mes = mes;
	}
public int getDia() {
		return dia;
	}
public void setDia(int dia) {
		this.dia = dia;
	}
public int getAnio() {
		return anio;
	}
public void setAnio(int anio) {
		this.anio = anio;
	}
public int getDni() {
		return dni;
	}
public void setDni(int dni) {
		this.dni = dni;
	}
public int getTelefono() {
		return telefono;
	}
public void setTelefono(int telefono) {
		this.telefono = telefono;
	}
public Usuario getUsuario() {
		return usuario;
	}
public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
}